/**
 * 
 */
package co.edu.udistrital.analyzer.business.orm.dao;

import java.io.Serializable;
import java.util.List;

import co.edu.udistrital.analyzer.business.orm.model.User;

/**
 * Interface para el acceso a los objetos de tipo User
 *
 * @author Alejo
 */
public interface UserDAO extends Serializable {
	
    /**
     * Almacena el registro de un usuario
     * 
     * @param usuario Usuario que va a ser almacenado
     */
    void save(User usuario);

    /**
     * Actualiza el registro de un usuario
     * 
     * @param usuario Usuario que va a ser actualizado
     */
    void update(User usuario);

    /**
     * Elimina el registro de un usuario
     * 
     * @param idUsuario Llave primaria del usuario que va a ser eliminado
     */
    void delete(Integer idUsuario);

    /**
     * Consulta el registro de un usuario por de llave primaria
     * 
     * @param idUsuario Llave primaria del usuario a consultar
     */
    User findById(Integer idUsuario);

    /**
     * Consulta todos los registros de usuarios
     */
    List<User> findAll();
    
    /**
     * Consulta un usuario por su login
     * 
     * @param login
     * @return
     */
    User findByLogin(String login);

}
